package com.sgcc.activiti.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sgcc.activiti.domain.OAnomalyStat;
import com.sgcc.activiti.domain.PendingLeaderboards;
import com.sgcc.activiti.domain.vo.DateSlot;
import org.apache.ibatis.annotations.Param;

/**
 * 看板统计 Mapper接口
 * 
 * @author sgcc
 * @date 2021-04-07
 */
public interface OAnomalyStatMapper 
{
    /**
     * 查询看板统计 
     * 
     * @param statDate 看板统计 ID
     * @return 看板统计 
     */
    public OAnomalyStat selectOAnomalyStatById(String statDate);

    /**
     * 查询看板统计 列表
     * 
     * @param oAnomalyStat 看板统计 
     * @return 看板统计 集合
     */
    public List<OAnomalyStat> selectOAnomalyStatList(OAnomalyStat oAnomalyStat);

    /**
     * 新增看板统计 
     * 
     * @param oAnomalyStat 看板统计 
     * @return 结果
     */
    public int insertOAnomalyStat(OAnomalyStat oAnomalyStat);

    /**
     * 修改看板统计 
     * 
     * @param oAnomalyStat 看板统计 
     * @return 结果
     */
    public int updateOAnomalyStat(OAnomalyStat oAnomalyStat);

    /**
     * 删除看板统计 
     * 
     * @param statDate 看板统计 ID
     * @return 结果
     */
    public int deleteOAnomalyStatById(String statDate);

    /**
     * 批量删除看板统计 
     * 
     * @param statDates 需要删除的数据ID
     * @return 结果
     */
    public int deleteOAnomalyStatByIds(String[] statDates);



    HashMap<String, String> getMonitorCount(PendingLeaderboards pendingLeaderboards);

    /**
     * 获取系统监控分布
     * @return
     */
    List<HashMap<String, String>> getSystemMonitoring();

    /**
     * 获取监控类型分布
     * @return
     */
    List<HashMap<String, String>> getMonitoringType();

    /**
     * 获取待处理异常数
     * @return
     */
    HashMap<String, String> getPendingException(PendingLeaderboards pendingLeaderboards);

    /**
     * 获取待处理排行榜
     * @return
     */
    List<PendingLeaderboards> getPendingLeaderboards(PendingLeaderboards pendingLeaderboards);

    /**
     * 运营监控看板，系统异常数排名
     */
    List<HashMap<String, String>> getSysAbnormalRank(DateSlot dateSlot);


    /**
     * 根据监控类型获取系统
     * @param monsystype
     * @return
     */
    List<String> getSysCode(@Param("monsystype") String[] monsystype);
    /**
     * 关键业务监控-各类系统占比
     * @param monsyscode
     * @return
     */
    List<HashMap<String, String>> getPendingSystem(@Param("monsyscode") String[] monsyscode, @Param("monsystype") String[] monsystype);

    /**
     * 关键业务监控-各类系统占比柱状图
     * @param monsyscode 监控系统
     * @param monsystype 监控类型
     * @param bdate 开始时间
     * @param edate 结束时间
     * @return
     */
    List<HashMap<String, Object>> getPendingSystemforhistogram(@Param("monsyscode") String[] monsyscode ,@Param("monsystype") String[] monsystype , @Param("bdate") String bdate, @Param("edate") String edate, @Param("dt") String dt, @Param("companyId") String companyId);

    /**
     * 数据库及主机监控-监控类型分布
     * @param monsystype
     * @return
     */
    List<HashMap<String, Object>> getMonTypePercentage(@Param("monsystype") String[] monsystype);

    //查看今日，监控异常趋势
    List<HashMap<String, String>> getTodayTrend();

    //查看本周，监控异常趋势
    int getTrendByDate(String dateStr);

    //查看本年，监控异常趋势
    int getYearTrend(String dateStr);

    //定时任务统计，异常信息
    //向异常统计表中，插入数据

    List<HashMap> getHourAbnormal(String date);
    void insertOAbnormalStat(@Param("date")String date );

    //零点  统计前一天数据总和
    List<HashMap> getLastDayAbnormal(String date);

    //向异常统计表中，插入一天统计和数据
    void insertDayOAbnormal(@Param("date")String date);



    /**
     * 异常统计
     * @param map
     * @return
     */
    Map<String ,String> getAnomalyStat(Map<String ,String> map);


}
